package com.cs.paoyer.administration.web.action;

import com.cs.paoyer.administration.business.model.FlexValueVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.web.form.FlexValueForm;
//import com.cs.paoyer.common.util.ManageSession;
import java.util.Collection;
//import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//import java.util.Vector;
import com.cs.paoyer.administration.business.AdministrationMngr;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.business.model.ApplicationVO;
//import com.cs.paoyer.administration.web.form.ApplicationForm;
import com.cs.paoyer.common.exception.CommonUserException;
//import com.cs.paoyer.administration.business.client.AdministrationDelegate;
import com.cs.paoyer.common.exception.UserException;
import com.cs.paoyer.common.exception.SystemException;
import com.cs.paoyer.administration.util.AccessControl;


  
public class CreateFlexValueTypeAction extends Action  {
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    
    FlexValueForm flexValueTypeForm = ( FlexValueForm ) form;
    ActionMessages messages = new ActionMessages();
    
    try
		{
				AccessControl access = new AccessControl();
        String path= mapping.getPath();         
        access.validateAccess(path,request,response);
        UserVO user = (UserVO) request.getSession().getAttribute("userInfo");
        String terminalAddress = request.getRemoteAddr();
        //AdministrationDelegate delegate = new AdministrationDelegate();
        AdministrationMngr delegate = new AdministrationMngr();
        Collection applicationsList = delegate.findApplicationByCriterea(new ApplicationVO());
        if(applicationsList!=null && applicationsList.size()>0)
        {
            request.setAttribute("applicationsList",applicationsList);
        }

        FlexValueVO flexValueType= new FlexValueVO();
				flexValueType.setFlexValueTypeName(flexValueTypeForm.getFlexValueTypeName());
        flexValueType.setFlexValueTypeDescription(flexValueTypeForm.getFlexValueTypeDescription());
				flexValueType.setApplicationContextInternalCode(flexValueTypeForm.getApplicationContextInternalCode());
				flexValueType.setFlexValueTypeAutomaticCustomCode(flexValueTypeForm.getFlexValueTypeAutomaticCustomCode());
				//flexValueType.setFlexValueTypeUse(flexValueTypeForm.getFlexValueTypeUse());
				//flexValueType.setFlexValueTypeEffectiveFrom(flexValueTypeForm.getFlexValueTypeEffectiveFrom());
				//flexValueType.setFlexValueTypeEffectiveUntil(flexValueTypeForm.getFlexValueTypeEffectiveUntil());
				flexValueType.setFlexValueTypeWebUserCrea(user.getName());
				flexValueType.setFlexValueTypeWebUserModif(user.getName());
				flexValueType.setFlexValueTypeWebClientCrea(terminalAddress);
				flexValueType.setFlexValueTypeWebClientModif(terminalAddress);   
				delegate.createFlexValueType(flexValueType);
        
			  messages.add("msgOk", 
                new ActionMessage("message.transaction.was.successfull"));
              saveMessages(request, messages);
    }
		catch (UserException ue) 
		{
				messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
      
    }
		catch ( SystemException se) 
		{
				messages.add("msgError",  new ActionMessage("loginForm.message."
																			+ se.getExceptionVO().getId()));
				saveMessages(request, messages);
				//retornamos a la pagina de la que viene el usuario (Login.jsp)
				return mapping.getInputForward();
    }
    return mapping.findForward("success");
  }
}